package Persistencia;

/**
 * Esta clase es la encargada de crear la BD del sistema, tiene un metodo por
 * cada tabla requerida, el cual la crea, que son llamados en el constructor de
 * la clase. De momento falta estionar el cierre de la conexion
 *
 * @author marco
 */
import java.sql.*;

public class BD {

    Singleton_Conexion datosconexion;
    Connection conn;

    public BD() {
        try {
            Class.forName(datosconexion.getInstancia().getDriver());//especificamos el driver
            conn = DriverManager.getConnection(datosconexion.getInstancia().getProtocolo());//creamos la conexión, si la BD no existe la crea
            this.crearTablaAcciones();
            this.crearTablaComentarios();
            this.crearTablaUsuarios();
            Statement stat = conn.createStatement();
            stat.close();
        } catch (ClassNotFoundException ex) {
            ex.printStackTrace();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
    /*
     * Este metodo crea la tabla acciones, omito las claves foraneas de las
     * tablas no creadas
     */

    public boolean crearTablaAcciones() {
        try {
            Statement stat = conn.createStatement();
            stat.executeUpdate("CREATE TABLE IF NOT EXISTS acciones("
                    + "id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,"
                    + "nombre VARCHAR(50),"
                    + "descripcion VARCHAR(2000),"
                    + "nombre_usuario VARCHAR(50),"
                    + "estado varchar(1),"
                    + "fechaCreacion DATE,"
                    + "fechaVencimiento DATE,"
                    + "idReunion INTEGER"
                    + "CONSTRAINT fkUsuario FOREIGN KEY(nombre_usuario) REFERENCES usuario(nombre_usuario)"
                    + ")");
            stat.close();
            return true;

        } catch (SQLException ex) {
            ex.printStackTrace();
            return false;
        }
    }
    /*
     * metodo que crea la tabla comentarios
     */

    public boolean crearTablaComentarios() {
        try {
            Statement stat = conn.createStatement();
            stat.executeUpdate("CREATE TABLE IF NOT EXISTS comentarios("
                    + "id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,"
                    + "idAccion INTEGER NOT NULL  UNIQUE , "
                    + "descripcion varchar(1000)"
                    + ")");
            stat.close();
            return true;

        } catch (SQLException ex) {
            ex.printStackTrace();
            return false;
        }
    }




    //creo la tabla usuario
    public boolean crearTablaUsuarios() {
        try {
            Statement stat = conn.createStatement();
            stat.executeUpdate("CREATE TABLE IF NOT EXISTS usuario("
                    + "nombre_usuario VARCHAR(50),"
                    + "password VARCHAR(50),"
                    + "nombre VARCHAR(50),"
                    + "apellido VARCHAR(50),"
                    + "telefono VARCHAR(50),"
                    + "direccion VARCHAR(50),"
                    + "nombre_rol VARCHAR(50),"
                    + "CONSTRAINT pkUsuario PRIMARY KEY(nombre_usuario),"
                    + ")");
            stat.close();
            return true;

        } catch (SQLException ex) {
            ex.printStackTrace();
            return false;
        }
    }
}
